CodeRivet Key Authorization Definitions

SoftwareShield System Feature Guide > Authorization Definitions > Authorization Definition Types > CodeRivet™ Key Authorization Definitions

## CodeRivet™ Key Authorization Definitions

A CodeRivet Key Authorization Definition is a special Authorization Definition type used only with IronWrapped applications. This definition allows you to unlock specific small blocks of executable code within your application.

In order to use this type of definition, you must wrap sections of your code in CodeRivet delimiters prior to compilation and prior to compiling the host with the License Manager. See: IronWrapping for a complete description of how to include CodeRivets in your application code.

When you IronWrap an application that uses CodeRivets, the IronWrap linker individually encrypts each CodeRivet block with its own key. Note that this is done before, and in addition to, any encryption performed on the host as a whole. The key is not stored inside the protected application of the license file. Even when the application is finally loaded, these blocks remain encrypted until execution is directed at them. When execution finally reaches a CodeRivet, what happens is dependant upon if the rivet has been unlocked. If it has not been unlocked, execution passes right over the encrypted section of code without error. If it has been unlocked, the encrypted section of code is immediately decrypted into memory, execution passes through it normally and when execution exist the block, the decrypted memory is re-encrypted immediately.

Before a CodeRivet is activated (unlocked), the executable code within the block will always be skipped during execution from inside your IronWrapped product. Moreover, the code within that block remains encrypted at all times until it is unlocked by using a CodeRivet. While you are debugging your application from within your IDE, CodeRivet delimiters will transparently be skipped (just like they were unlocked).

The Activation Code that is generated for a CodeRivet Key Authorization Definition does give you the option of using a Shelf-Life. The resulting Activation Code must be used within the shelf-life after the date it has been issued, or the code itself will expire and will cease to work. Note you can override the shelf-life you defined when you created the license at the time you generate an Activation Code with the Manual-Activator.

The Activation Code that is generated for a CodeRivet Key Authorization Definition is a "single-use" code by default. If single-use is enabled, generated Activation Codes can only be used once. However, note that you may reissue it to the same customer on another day, and the code will be different (due to the embedded shelf-life date) and therefore may be used by the customer. You have the option of turning off single-use when you define your license, but do not have the option of overriding it later.

CodeRivet Key Authorization Definitions do require a parameter to be sent (implicitly). The parameter will be generated for you and contains the necessary key to unlock the CodeRivet.

CodeRivet Key Authorization Definitions can be used only as a payload for Design-Time Composite Authorization Definitions. They may not be used as a Run-Time payload.

### When To Use A CodeRivet Key Authorization Definition

CodeRivet Key Authorization Definitions will be automatically added for you to any license project which uses IronWrapping and CodeRivets. These definitions will always appear at the end of the list of definitions (definition ID's 54 to 63).

### More Information

For help in understanding CodeRivets and help on inserting CodeRivets into your application code, see CodeRivets in this feature reference.

For help in actually enabling CodeRivets in your licenses, see CodeRivets Tab in the SoftwareShield License Manager Reference.